1. Field of the Invention
The present invention relates to computer display systems, and, in particular, to methods and apparatuses for generating a composite image from multiple source images.
2. Description of the Related Art
Computer display systems often contain two or more drawing agents. Those skilled in the art will understand that a drawing agent may be any of a number of devices that store pixel data in a display buffer (e.g., a frame buffer). For example, the central processing unit of a personal computer may copy bitmap images from a disk into a display buffer for display in a window while a graphics controller simultaneously draws text and a video coder/decoder (codec) draws real-time video conference frames into another window. Each of these devices would thus be understood to be a drawing agent. Additionally, a single drawing agent like a central processing unit that is shared among multiple processes in a multi-tasking system may behave as multiple virtual drawing agents.
In either of these cases, windows from the different drawing agents or virtual drawing agents may be completely or partially overlapped. In regions where windows from different drawing agents overlap, images in one window may be partially obscured by another window on top of it. When this happens redundant overwriting of pixels in the regions of the overlaps may occur.
Some implementations of conventional display techniques provide visibility of the window on top by drawing the top window after drawing all of the other windows. Thus, the same pixel position on the display is sometimes written several times by various drawing agents even though the most recently written window is the only one visible.
To avoid this redundant drawing, some display systems provide a window-ID mask or window-ID data structure. This window-ID mask is a single-mask structure which identifies which process or processor is actually displayed at each pixel of the display screen. The various drawing agents check this mask to determine which pixels to update thereby eliminating the unnecessary work required to update pixels which are not displayed. The single-mask structure is processed by specialized frame buffer control hardware or by each drawing agent.
Alternatively, software is used to maintain a list of clip rectangles rather than using a mask. These clip rectangles define the boundaries of every window in a display. Clip rectangle lists require less storage area. However, they do not provide adequate information for very complex arrangements with many windows or non-rectangular window shapes.
In general, conventional schemes require brute force transmission of overlapping bitmaps on the system buses with a frame buffer controller or a central processing unit comparing these pixels against the clip rectangles or the window-ID mask. With motion video or graphics animations, these conventional schemes require a great deal of bus traffic. This bus traffic is sometimes on the order of ten megabytes to over one hundred megabytes per second.
Thus, it is well known in the art of computer graphics systems to use digital masks to control the display of window contents. In these systems, a mask usually consists of a bitmapped control bit wherein one bit is provided per display pixel. A value of one in the bitmap indicates that the corresponding pixel in the window is visible to the user and should therefore be displayed. A zero value in the bitmap indicates that the pixel is obscured or clipped by another window and should not be displayed.